用ChatGPT去复刻一款流水过亿的游戏!
2022最火的肉鸽游戏是哪款?如果要问这个问题,那么非《吸血鬼幸存者》莫属!
割草游戏的元年
或许有人没玩过吸血鬼幸存者,但一定在抖音视频上刷到过同类的玩法,简单的操作配合上多样的技能搭配,加上盲盒一样的肉鸽玩法,和密密麻麻的魔物,经常让玩家一炫就一天,根本停不下来。
这种魔性般的割草玩法不仅在Steam的PC游戏中火爆了起来,更是像风暴一般,席卷了全球的2D动作游戏领域。
2022年,由Habby发行的《弹壳特攻队》轻松实现了月流水破亿,长期霸占了全球各地区的排行榜。
这款游戏的玩法真正向我阐释了““虽千万人,吾往矣!”.
同样爆火的还有另外一款水墨画风的割草游戏《九重试炼》,让我体验到什么是“仙人之下我无敌!仙人之上一换一!""
目前国内小游戏平台和安卓,iOS平台的割草游戏多达数百款,但是大部分同类游戏都面临了性能问题。无论是数千个敌人需要实用定制化的物理引擎,还是大量的粒子特效需要优雅的和合批处理,都需要大量的研发时间。
使用AI帮助降低研发成本
针对上述的痛点,我找到了一个物理引擎大佬98K,98K使用ChatGPT的AI聊天对话,来定制一款在H5和小游戏平台能支持数千敌人的物理引擎!
本文将介绍如何使用ChatGPT去制作一款商用级的物理引擎 (98K割草物理)
下期文章二喵会提供自己的粒子方案,介绍如何用ChatGPT优化的粒子特效系统 (P2D物理系统),借助ChatGPT去优化底层的Assembler和Renderer,轻松实现全屏数千个粒子动画特效的合批和性能提升!让小游戏平台也能实现数千个特效同屏!
当然,这个方案会免费开源(同时下期文章也会分享本文的碰撞检测的Cocos的官方应用商店地址 ^ ^,卡牌游戏也在更新了!)
使用ChatGPT制作高性能的碰撞检测
这次在Chatgpt AI的加持下,为大家带来了高性能2D/3D,轻量的动态碰撞检测系统,为广大的割草,弹幕,打飞机,群聚… ,都提供轻量高性能的开箱即用的系统, 为广大开发做更优质性能游戏,提供一份力量。
碰撞系统分为动态和静态两种,不同的情形会使用不同策略。
1.动态碰撞检测 ,主要针对运动物体,例如角色,子弹,技能… 基于智能分轴扫掠优化方案,使用了(优化版SAP + OBB等…) 适用各种2D/3D,运动物体检测,如角色,弹幕,子弹,攻击… (性能是一般“四叉树”方式的2到3倍性能) 体验地址:http://learncocos.com/rougelike/
2.静态碰撞检测 , 主要针对静止物体,例如场景 , 物品 , 障碍… 基于空间静态分割优化方案,使用了(octree + kdtree + gjk + epa) 技术栈。适用于3D世界行走,3D表面行走和3D边界检测(fps , mmo, rpg) 体验地址:https://store.cocos.com/app/detail/4035
动态碰撞检测系统组成
1.AABB 包围盒更新 2.粗略碰撞算法筛选 3.最后形状精确碰撞
下面围绕这三件套,我会请教下最近大火的ChatGPT,看能不能交个朋友,让GPT老师指点一二!
先科普一下,这次为什么会挑选SAP,作为动态碰撞检测的核心筛选算法呢,因为各大物理引擎都能看它的身影,存在即是理由。SAP全名(sweep and prune) , 是一种对轴向排序扫掠算法(有种SAT剪枝的味道)。
对X轴投影可以快速分离排除相交
大老师总结了这些优点:
1.物体更新快 (物体实时更新位置)
由于要对分轴排序,你可能会想到用快排nlogn ,
但是SAP 有个真正灵魂地方,由于运动物体相邻帧情况下排序是相对稳定,所以实际中使用插入排序会更快,是很有可能到o(n) 的性能,整体上会比nlogn快很多。其他树状如四叉,八叉,BVH ,更新物体需要调整树结构是消耗成本不低的。
2.物体间相互检测快 (常说的trigger)由于使用的顺序存取结构,读写性能比其他形树结构能高,同时轻易进行相互trigger检测,而且这顺序结构天生就带去重检测功能(例如:四叉树,八叉树,格子,这一类多次分割,还要进行去重标记检测,无形增加性能消耗)
3.支持2D/3D无范围限制 (兼容性)由于是对轴向排序分割检测,所以不存空间大小限制,也不受维度的限制,很好的支持全范围的2D/3D 空间检测。(像四叉,八叉,格子,可能会受到空间范围大小限制)
本着人生第一信条,“谁提出问题就让谁来解决问题!” 我决定让AI它解决自己抛出的问题。
好家伙,一声音不哼的,啪啪啪打起代码来了!
但是总感觉流程可以但是还是缺少点灵魂,武功心法掌握的是十足,打起功夫来还是差了点。
不难看出老师的基础内容很强,只是缺少一两套招式!让我们来循循渐进,提起提升GPT老师的武学招式!
经过一轮和GPT老师的学习,也收集差不多,本着“谁提出问题就让谁来解决问题!”,我将和大老师一起来优化这个方案!
在AI编写的框架上进行自己的精准的改造,同时结合自己的优化方式,对SAP算法进行了深入的改造,为后面碰撞检测提供最大的效力。
粗略筛选完成了,成功了一大半,还有两个环节(AABB , Shape),如何实现?本着个人第三信条,能不动手坚决不动手,于是再次唤醒AI起来啪啪啪写代码。
1.AABB 包围盒更新?(AABB 主要提供给粗略筛选)
经过了几轮沟通,GPT老师在我的穷追不舍之下,给出了比较精简的方案。
他像是一个不知疲倦的编程机器,不停的卷我!
我只需要拍拍的他的机箱!他就会不停的加班!不知疲倦的输出更高质量的代码方案!
这样AABB 旋转更新完成,可以交付到SAP进行粗略碰撞筛选。
Shape形状精确碰撞
目前暂时支持Box ,Sphere检测(后续会支持其他常用),支持3D旋转操作的碰撞。所以我们要实现OBB vs OBB 和 OBB vs Sphere 的检测。本着个人第三信条,厚着脸皮再次唤醒了AI.
1.Sphere vs Sphere 的碰撞检测2.OBB vs Sphere (旋转方体与球体 精确碰撞)
有这个SDF检测,只需要把Sphere转到OBB 旋转坐标系下,就可以转化为SDF求交。
3.OBB vs OBB (旋转方体之间精确碰撞)
老板!这里有人007写代码!!!!
在GPT老师的的协助下,这个方案得到了很好解决!
最后在努力下,碰撞系统终于运行了起来,AI是可以写代码,但是它不一定完美,需要从业者有一定知识储备,才能更好的发挥它效力。
假以时日,在大家训练和全球的知识的加持下,它终究会成为那个巨人!踩在我们肩上肩膀上!帮助人类探索未知的星海!!
动态碰撞实战!跑个分!
小米10 浏览器:2000个 ,2D AABB 碰撞测试
小米10 浏览器:2000个 ,3D AABB 碰撞测试
小米10 浏览器: 简单使用割草demo测试
测试设备:小米10 骁龙865 (军哥真米粉!)
浏览器:自带浏览器
测试数据:
2000个运动2D AABB : 平均 5ms 左右
2000个运动3D AABB : 平均 8ms 左右
这个性能是一般“四叉树”方式的2到3倍性能,更多的测试体验,可以行运行下面体验连接。体验连接:http://learncocos.com/rougelike/
这不是我的极限,更不是ChatGPT的极限
在AI的加持下,我们的极限会在星辰大海!